package com.dashanchessgame.chess;

import com.dashanchessgame.tools.ImageTool;

import java.awt.*;

/**
 * 象
 *
 * @author 37460
 */
public class ChessElephant implements Chess {
    /**
     * chessCheck  检查落子是否合法
     * <p>
     * map              地图
     * now_lineNumber   当前棋子的行号
     * now_ColumnNumber 当前棋子的列号
     * to_lineNumber    棋子要去的行号
     * to_ColumnNumber  棋子要去的列号
     * isChessColor     判断棋子的攻守方  黑的返回true 红的返回false
     * 如果可以去，返回true, 否则返回false
     */
    @Override
    public boolean chessCheck(int[][] map, int nowLineNumber, int nowColumnNumber, int toLineNumber, int toColumnNumber, boolean isChessColor) {
        //获取相差的行数和列数
        int istoLineNumber = Math.abs(nowLineNumber - toLineNumber);
        int istoColumnNumber = Math.abs(nowColumnNumber - toColumnNumber);

        //判断是否满足象的不行规则如果去的位置相差行数不是2相差的列数不是2 返回false 不符合规则
        if (!(istoLineNumber == 2 && istoColumnNumber == 2) ) {
            return false;
        }else {
            int lineNumber = (nowLineNumber+toLineNumber)/2;
            int columnNumber = (nowColumnNumber+toColumnNumber)/2;
            if (isChessColor){
                //黑象 判断相差的行数上有没有棋子并且 没有过河
                return map[lineNumber][columnNumber] ==0 && toLineNumber<=4 ;
            }else {
                //红象 判断相差的行数上有没有棋子并且 没有过河
                return map[lineNumber][columnNumber] ==0 && toLineNumber>4;
            }
        }
    }

    @Override
    public int getType() {
        return 'X';
    }


    @Override
    public Image getImage(boolean isChessColor) {
        return ImageTool.loadImage(isChessColor ? "黑象.gif" : "红象.gif");
    }
}
